package com.aispeech.asr.comm.data.form.sentence;

import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.databind.PropertyNamingStrategy;
import com.fasterxml.jackson.databind.annotation.JsonNaming;
import lombok.ToString;

@ToString
@JsonNaming(PropertyNamingStrategy.SnakeCaseStrategy.class)
public class Asr {
    boolean useVad = true;               // 是否启用VAD功能。 默认：true。如果关闭，会跳过VAD切割。
    boolean usePost = true;              // 是否启用所有后处理功能。 默认：true。如果关闭，会以原始的asr结果返回。
    boolean useSegment = false;          // 是否返回详细的分词结果。默认：false。如果开启，返回的result会以词为单位返回。
    @JsonProperty(access = JsonProperty.Access.WRITE_ONLY)
    boolean useSmoking = false;          // 开启后处理时，是否启用口语顺滑，默认：false。
    boolean useTxtSmooth = false;        // 调整口语顺滑参数名称，保持和文件转写一致。（保留useSmoking, 为了兼容）
    boolean useItn = false;              // 开启后处理时，是否启用逆文本转换，默认：false。
    boolean usePuctuation = true;        // 开启后处理时，是否启用标点符号。
    boolean useFullstop = false;         // 开启后处理时，是否启用句号进行分句。
    boolean useParagraph = false;        // 开启后处理时，是否启用语义分段。
    boolean usePinyin = false;           // 开启后处理时，是否启用拼音。
    boolean useTone = false;             // 开启后处理时，是否启用拼音声调, 开启时同时开启拼音。
    boolean useVolume = false;           // 是否开启音量检测，返回音频的音量分贝。
    int vadPause = 500;                  // vad间隔时间。
    String lang = "cn";                  // cn（默认值，中文）/ en（英文）/ ce（中英文混合）/ sichuantone-mix（四川话+普通话）/ cantonese-mix（粤语+普通话）
    String lmId = "";                    // 要使用的二路模型LMID。默认：""， 表示不使用二路资源。如果设置为"default"， 会使用客户在后台绑定好的默认二路资源。
    String phraseFileId = "";            // 要使用的热词ID。默认：""， 表示不使用热词。如果设置为"default"， 会使用客户在后台绑定好的默认热词。
    String sensitiveFileId = "";         // 要使用的敏感词ID。默认：""， 表示不使用敏感词。如果设置为"default"， 会使用客户在后台绑定好的默认敏感词。
    public Asr() {
    }

    public boolean isUseVolume() {
        return useVolume;
    }

    public void setUseVolume(boolean useVolume) {
        this.useVolume = useVolume;
    }

    public boolean isUseVad() {
        return useVad;
    }

    public void setUseVad(boolean useVad) {
        this.useVad = useVad;
    }

    public boolean isUsePost() {
        return usePost;
    }

    public void setUsePost(boolean usePost) {
        this.usePost = usePost;
    }

    public boolean isUseSegment() {
        return useSegment;
    }

    public void setUseSegment(boolean useSegment) {
        this.useSegment = useSegment;
    }

    //    @JsonIgnore
    public boolean isUseSmoking() {
        return useSmoking;
    }

    //    @JsonProperty
    public void setUseSmoking(boolean useSmoking) {
        this.useSmoking = useSmoking;
        this.useTxtSmooth = useSmoking;
    }

    public boolean isUseTxtSmooth() {
        return useTxtSmooth;
    }

    public void setUseTxtSmooth(boolean useTxtSmooth) {
        this.useTxtSmooth = useTxtSmooth;
    }

    public boolean isUseItn() {
        return useItn;
    }

    public void setUseItn(boolean useItn) {
        this.useItn = useItn;
    }

    public boolean isUsePuctuation() {
        return usePuctuation;
    }

    public void setUsePuctuation(boolean usePuctuation) {
        this.usePuctuation = usePuctuation;
    }

    public boolean isUseFullstop() {
        return useFullstop;
    }

    public void setUseFullstop(boolean useFullstop) {
        this.useFullstop = useFullstop;
    }

    public boolean isUseParagraph() {
        return useParagraph;
    }

    public void setUseParagraph(boolean useParagraph) {
        this.useParagraph = useParagraph;
    }

    public boolean isUsePinyin() {
        return usePinyin;
    }

    public void setUsePinyin(boolean usePinyin) {
        this.usePinyin = usePinyin;
    }

    public boolean isUseTone() {
        return useTone;
    }

    public void setUseTone(boolean useTone) {
        this.useTone = useTone;
    }

    public int getVadPause() {
        return vadPause;
    }

    public void setVadPause(int vadPause) {
        this.vadPause = vadPause;
    }

    public String getLang() {
        return lang;
    }

    public void setLang(String lang) {
        this.lang = lang;
    }

    public String getLmId() {
        return lmId;
    }

    public void setLmId(String lmId) {
        this.lmId = lmId;
    }

    public String getPhraseFileId() {
        return phraseFileId;
    }

    public void setPhraseFileId(String phraseFileId) {
        this.phraseFileId = phraseFileId;
    }

    public String getSensitiveFileId() {
        return sensitiveFileId;
    }

    public void setSensitiveFileId(String sensitiveFileId) {
        this.sensitiveFileId = sensitiveFileId;
    }
}
